Skip to content

Fix mvnup effective model analysis for CI-friendly parent versions#12205

Merged
gnodet merged 2 commits into
masterfrom
fix/revision-parent-version
Jun 4, 2026
Merged

Fix mvnup effective model analysis for CI-friendly parent versions#12205
gnodet merged 2 commits into
masterfrom
fix/revision-parent-version

Conversation

@gnodet

@gnodet gnodet commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Eliminate temp directory in PluginUpgradeStrategy — build effective models from original file paths instead of copying POMs to a temp directory that lacked .mvn for root detection
  • Fix DefaultModelBuilder.doReadFileModel() to handle ${revision} parent versions: enter parent resolution block for expression versions, skip isParentWithinRootDirectory when root directory is a fallback guess, and accept parent version match when version contains an expression
  • Add unit test, integration test, and fix existing PluginUpgradeStrategyTest

Fixes the "Parent POM is located above the root directory" error that occurred in mvnup apply for all CI-friendly projects using ${revision} (bigtop-manager, guacamole-client, hbase-connectors, logging-log4j-samples).

Test plan

  • DefaultModelBuilderTest — 7 tests pass (including new testCiFriendlyVersion)
  • PluginUpgradeStrategyTest — 27 tests pass (including fixed shouldDetectInheritedPluginsFromRemoteParent)
  • MavenITgh12184CIFriendlyParentVersionTest — 2 ITs pass (property from POM, property from CLI)
  • Existing CI-friendly ITs pass (MavenITgh11196CIFriendlyProfilesTest, MavenITmng8744CIFriendlyTest)
  • mvnup apply on all 4 affected projects produces no "parent above root" errors

🤖 Generated with Claude Code

gnodet added a commit that referenced this pull request Jun 2, 2026
…#12205)

Cherry-pick from fix/revision-parent-version branch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gnodet gnodet added this to the 4.0.0-rc-6 milestone Jun 2, 2026
@gnodet gnodet force-pushed the fix/revision-parent-version branch from 7792712 to 72fe7ed Compare June 3, 2026 14:46
gnodet and others added 2 commits June 4, 2026 08:43
mvnup's PluginUpgradeStrategy copied POMs to a temp directory for
effective model analysis. That temp directory lacked .mvn, so root
detection failed for child modules with ${revision} parent versions,
producing "Parent POM is located above the root directory" errors.

Eliminate the temp directory entirely — build effective models from
the original file paths, which already have proper .mvn and project
structure for root detection.

Also fix DefaultModelBuilder.doReadFileModel() to:
- Enter the parent resolution block when parent version contains
  expressions (${revision}, etc.)
- Only enforce isParentWithinRootDirectory when rootDirectory came
  from the session, not the fallback heuristic
- Accept parent version match when version contains an expression

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@gnodet gnodet force-pushed the fix/revision-parent-version branch from 72fe7ed to 7ac7e80 Compare June 4, 2026 08:44
@gnodet gnodet merged commit 504785b into master Jun 4, 2026
@gnodet gnodet deleted the fix/revision-parent-version branch June 4, 2026 08:44
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

@gnodet Please assign appropriate label to PR according to the type of change.

gnodet added a commit that referenced this pull request Jun 4, 2026
…12205) (#12230)

* Fix mvnup effective model analysis for CI-friendly parent versions

mvnup's PluginUpgradeStrategy copied POMs to a temp directory for
effective model analysis. That temp directory lacked .mvn, so root
detection failed for child modules with ${revision} parent versions,
producing "Parent POM is located above the root directory" errors.

Eliminate the temp directory entirely — build effective models from
the original file paths, which already have proper .mvn and project
structure for root detection.

Also fix DefaultModelBuilder.doReadFileModel() to:
- Enter the parent resolution block when parent version contains
  expressions (${revision}, etc.)
- Only enforce isParentWithinRootDirectory when rootDirectory came
  from the session, not the fallback heuristic
- Accept parent version match when version contains an expression



* Fix Spotless formatting violation



---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@gnodet gnodet added the bug Something isn't working label Jun 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants